/** Page Principale de l'application (Accueil et Affichage) */

import java.awt.*;

import javax.swing.*;
import javax.swing.border.Border;

/** Page d'accueil et d'affichage des resultats */
public class PagePrincipale {
	// variables generale
	private JFrame fenetrePrincipale;
	private double latitude;
	private double fuseau;
	private double x, y, z;
	
	// affichages valeurs
	JLabel lat, fus, xVal, yVal, zVal;
	
	// variable definissant l'heure a afficher
	private boolean heureSolaire = true;
	
	// variables du cas plan
	private double largeur;
	private double longueur;
	
	/** Constructeur de la fenetre principale */
	public PagePrincipale(){
		initialisation();
		placerComposant();
		creerMenu();

		fenetrePrincipale.setVisible(true);
	}
	
	/** Creation de la fenetre de base */
	private void initialisation(){
		fenetrePrincipale = new JFrame();
		fenetrePrincipale.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenetrePrincipale.setBounds(50,50,1200,800);
	}
	
	/** Insertion des composants */
	private void placerComposant(){
		
		// outils graphiques esthetiques
		Border bordure = BorderFactory.createLineBorder(Color.black);
		
		/////////////////////////////
		// creer la zone d'affichage
		/////////////////////////////
		JPanel zA = new JPanel();
	    zA.setLayout(new BoxLayout(zA, BoxLayout.LINE_AXIS));
	    JPanel aff = new JPanel();
	    aff.setBackground(Color.white);
	    aff.setPreferredSize(new Dimension(1200,750));
	    aff.setBorder(bordure);
	    zA.add(aff);
	 
	    ////////////////////////////
	    // creer la zone de donnees
	    ////////////////////////////
	    JPanel zD = new JPanel();
	    zD.setLayout(new BoxLayout(zD, BoxLayout.LINE_AXIS));
	    
	    // afficher la latitude
	    JLabel latText = new JLabel("Latitude :",JLabel.CENTER);
	    latText.setPreferredSize(new Dimension(100,50));
	    zD.add(latText);
	    
	    JPanel zVide = new JPanel();
	    zVide.setPreferredSize(new Dimension(0,0));
	    zD.add(zVide);
	    
	    lat = new JLabel(" ",JLabel.CENTER);
	    lat.setOpaque(true);
	    lat.setBackground(Color.white);
	    lat.setBorder(bordure);
	    lat.setPreferredSize(new Dimension(50,50));
	    zD.add(lat);
	    
	    // afficher le fuseau
	    if (!heureSolaire) {
	    	zD.add(Box.createRigidArea(new Dimension(50,0)));
	    	
		    JLabel fusText = new JLabel("Fuseau :",JLabel.CENTER);
		    fusText.setPreferredSize(new Dimension(100,50));
		    zD.add(fusText);
		    
		    JPanel zVide5 = new JPanel();
		    zVide5.setPreferredSize(new Dimension(0,0));
		    zD.add(zVide5);
		    
		    fus = new JLabel(" ",JLabel.CENTER);
		    fus.setOpaque(true);
		    fus.setBackground(Color.white);
		    fus.setBorder(bordure);
		    fus.setPreferredSize(new Dimension(50,50));
		    zD.add(fus);
		    
		    zD.add(Box.createRigidArea(new Dimension(50,0)));
	    }
	    else {
	    	zD.add(Box.createRigidArea(new Dimension(200,0)));
	    }
	    
	    // afficher les coordonnees du Style
	    JLabel c = new JLabel("Coordonnees de la pointe du style:",JLabel.CENTER);
	    c.setPreferredSize(new Dimension(400,50));
	    zD.add(c);
	    
	    zD.add(Box.createRigidArea(new Dimension(10,0)));
	    
	    JPanel zVide2 = new JPanel();
	    zVide2.setPreferredSize(new Dimension(0,0));
	    zD.add(zVide2);
	    
	    xVal = new JLabel(" ",JLabel.CENTER);
	    xVal.setOpaque(true);
	    xVal.setBackground(Color.white);
	    xVal.setBorder(bordure);
	    xVal.setPreferredSize(new Dimension(50,50));
	    zD.add(xVal);
	    
	    zD.add(Box.createRigidArea(new Dimension(10,0)));
	    
	    JPanel zVide3 = new JPanel();
	    zVide3.setPreferredSize(new Dimension(0,0));
	    zD.add(zVide3);
	    
	    yVal = new JLabel(" ",JLabel.CENTER);
	    yVal.setOpaque(true);
	    yVal.setBackground(Color.white);
	    yVal.setBorder(bordure);
	    yVal.setPreferredSize(new Dimension(50,50));
	    zD.add(yVal);
	    
	    zD.add(Box.createRigidArea(new Dimension(10,0)));
	    
	    JPanel zVide4 = new JPanel();
	    zVide4.setPreferredSize(new Dimension(0,0));
	    zD.add(zVide4);
	    
	    zVal = new JLabel(" ",JLabel.CENTER);
	    zVal.setOpaque(true);
	    zVal.setBackground(Color.white);
	    zVal.setBorder(bordure);
	    zVal.setPreferredSize(new Dimension(50,50));
	    zD.add(zVal);
	    
	    zD.add(Box.createRigidArea(new Dimension(50,0)));
	 
	    // places la zone de donnees en dessous de la zone d'affichage
	    JPanel a = new JPanel();
	    a.setLayout(new BoxLayout(a, BoxLayout.PAGE_AXIS));
	    a.add(zA);
	    a.add(Box.createRigidArea(new Dimension(0,10)));
	    a.add(zD);
	    a.add(Box.createRigidArea(new Dimension(0,10)));
	    
	    fenetrePrincipale.getContentPane().add(a);
	}
	
	/** Insertion du menu */
	private void creerMenu() {
		MenuPrincipal menuBarre = new MenuPrincipal(this);
		fenetrePrincipale.setJMenuBar(menuBarre);
	}
	
	////////////////////////////
	// Get et Set de la Fenetre
	////////////////////////////
	
	public JFrame getFenetrePrincipale() {
		return fenetrePrincipale;
	}

	public void setFenetrePrincipale(JFrame fenetrePrincipale) {
		this.fenetrePrincipale = fenetrePrincipale;
	}
	
	/////////////////////////////
	// Get et Set des variables
	/////////////////////////////

	public double getLatitude() {
		return latitude;
	}

	public void setLatitude(double latitude) {
		this.latitude = latitude;
	}
	
	public double getFuseau() {
		return fuseau;
	}

	public void setFuseau(double fuseau) {
		this.fuseau = fuseau;
	}

	public double getX() {
		return x;
	}

	public void setX(double x) {
		this.x = x;
	}

	public double getY() {
		return y;
	}

	public void setY(double y) {
		this.y = y;
	}

	public double getZ() {
		return z;
	}

	public void setZ(double z) {
		this.z = z;
	}

	public double getLargeur() {
		return largeur;
	}

	public void setLargeur(double largeur) {
		this.largeur = largeur;
	}

	public double getLongueur() {
		return longueur;
	}

	public void setLongueur(double longueur) {
		this.longueur = longueur;
	}
	
	public boolean isHeureSolaire() {
		return heureSolaire;
	}

	public void setHeureSolaire(boolean heureSolaire) {
		this.heureSolaire = heureSolaire;
	}
	
	
	/////////////////////////////////////////////////////
	// Gets et Set des Label d'afffichage des variables
	/////////////////////////////////////////////////////


	public JLabel getLat() {
		return lat;
	}

	public void setLat(JLabel lat) {
		this.lat = lat;
	}

	public JLabel getFus() {
		return fus;
	}

	public void setFus(JLabel fus) {
		this.fus = fus;
	}

	public JLabel getxVal() {
		return xVal;
	}

	public void setxVal(JLabel xVal) {
		this.xVal = xVal;
	}
	
	public JLabel getyVal() {
		return yVal;
	}

	public void setyVal(JLabel yVal) {
		this.yVal = yVal;
	}

	public JLabel getzVal() {
		return zVal;
	}

	public void setzVal(JLabel zVal) {
		this.zVal = zVal;
	}
	
	
	
	
	
	
	
	
	//////////
	// MAIN //
	//////////
	
	public static void main(String[] args){
		new PagePrincipale();
	}
	
}